package com.stx.test;

import java.io.FileInputStream;
import java.io.FileNotFoundException;

/**
 * packageName com.stx.test
 *
 * @author YangYi
 * @className ExceptionDemo
 * @date 2025/9/18
 * @description TODO
 */
public class ExceptionDemo {
    // 声明方法可能抛出FileNotFoundException
    public static void openFile(String fileName) throws FileNotFoundException {
        // 打开文件（可能抛出异常）
        new FileInputStream(fileName);
        System.out.println("文件打开成功");
    }

    // 检查年龄是否合法
    public static void checkAge(int age) {
        if (age < 0 || age > 150) {
            // 主动抛出异常
            throw new IllegalArgumentException("无效的年龄: " + age);
        }
        System.out.println("年龄合法: " + age + "岁");
    }
    public static void main(String[] args) {
        int[] numbers = {1, 2, 3};
        int a = 10;
        int b = 0;

        try {
            System.out.println("尝试访问数组元素");
            System.out.println(numbers[5]); // 数组越界异常
            // String str = null;
            // System.out.println(str.length()); // 空指针异常
//            int result = a / b;
//            System.out.println("结果: " + result); // 这行不会执行
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("捕获到异常: " + e.getMessage());
        }catch (NullPointerException e) {
            System.out.println("空指针异常: " + e.getMessage());
        } catch (Exception e) { // 通用异常捕获（必须放在最后）
            System.out.println("发生其他异常: " + e);
        } finally {
            // 无论是否异常，一定会执行
            System.out.println("finally块执行：清理资源");
        }

        System.out.println("程序继续运行");
    }
}
